Оператор [default]

картинка

Описание

Оператор [default] задаёт начальное значение логического узла. Он всегда ставится первым в списке операторов.

Если остальные операторы узла не выполнились (вернули nil, false или ошибку), узел сохраняет значение по умолчанию. Если хотя бы один оператор сработал корректно — значение по умолчанию заменяется.

Пример

-- Узел "N1_sim_found"
--------------------------------------
-- Проверить что Сим-карта находится в слоте
N1_sim_found = {                                               -- Создаём логический узел "simfound"
    {
        ["load-ubus"] = function (nodes)                   -- Оператор [load-ubus] через системную шину 
            return {                                       -- Получает от GSM-модемеа статус наличия
                object = "tsmodem.driver",                 -- Сим-карты в слоте
                method = "cpin", 
                params = {},                               -- Результат:            
            }                                              -- {
        end,                                               --    "value": "true",
    }                                                      --    "updated": "1773160342"
}                                                          --    "changed": "1773160300"
                                                           --     "command": "AT+CPIN?"
                                                           -- }


-- Узел "N2_sim_registered"
--------------------------------------
-- Если Сим-карта в слоте, то получить статус регистрации в GSM-сети
N2_sim_registered = {
    {
        ["default"] = function(nodes)
            return {
                value = "not_registered",
                status = "unknown"
            }
        end
    },

    {
        ["load-ubus"] = function(nodes)
            return {
                ubus = "tsmodem.driver",     -- Имя объекта на шине
                method = "reg",              -- Вызываемый метод
                params = {},                 -- без параметров
            }
        end
    },

    {   -- другие операторы (например, оператор-3)
        -- Значение узла N2_sim_registered обновляется в результате выполнения операторов 3 и 4
        ["operator-3"] = function(nodes)
            -- логика оператора
        end
    },
},

Как это работает

  • [default] — первый оператор, задаёт начальное значение узла;
  • Если все следующие операторы не дали результата (nil, false или ошибка) — остаётся значение по умолчанию;
  • Если хоть один следующий оператор сработал корректно — значение по умолчанию заменяется;
  • В примере: если load-ubus не получил статус SIM-карты, узел получает {value = "not_registered", status = "unknown"}. Если получил — значение по умолчанию игнорируется.